In an application server environment, a server is generally connected to multiple clients via a communication network. The clients are used at an end user system for interacting with the server. The client may be, for example an interface such as a web browser, a Java-based program, or any other Web-enabled programming application. Usually, the clients request the server for certain information. The server executes some applications that can generate the content corresponding to the client's request.
Generally, for synchronous actions the server sends response content in the order of the synchronous actions. For asynchronous actions, the server aggregates the content and sends a response corresponding to the client's request. Some earlier asynchronous solutions defined the concept of off-loading the responsibility of aggregating the generated content to the client that made the initial request. Currently when the result server maintains include results and distributes them as needed, caching of the content on the server for an indeterminate time period is required so that the server is able to serve other clients requesting for the same content. Moreover, depending on the particular implementation, the client would need to either constantly poll the application server or keep a connection open until the application server finishes processing the request.
This aggregation process may be costly in terms of memory and request processing resources at the server. Moreover, caching requirements on the server burdens available cache space at the server. Furthermore, as the variability of the web content increases, the probability that the majority of the cached web content on the server may be requested again decreases, thereby rendering known caching techniques less effective.
Another existing solution provided a peer-to-peer client web caching system, where end users collectively share their web cache contents, thereby reducing burden on web servers. However, this requires the configuration of a proxy location in the client to handle the proxy requests, or additional software to be installed on the client to handle the normal requests, or both.
In accordance with the foregoing, there is a need for a solution, where the server can offload the responsibility of caching the content to clients and share the content between multiple clients.